package com.recipedb.sprint.service.impl;

import com.recipedb.sprint.entity.AdminPrompt;
import com.recipedb.sprint.repository.AdminPromptRepository;
import com.recipedb.sprint.service.AdminPromptService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Optional;

@Slf4j
@Service
@RequiredArgsConstructor
public class AdminPromptServiceImpl implements AdminPromptService {

    private final AdminPromptRepository adminPromptRepository;

    @Override
    public String getAdminPrompt() {
        Optional<AdminPrompt> adminPrompt = adminPromptRepository.findById(1L);
        return adminPrompt.map(AdminPrompt::getAdminPrompt)
                .orElse(null);
    }

    @Override
    @Transactional
    public void updateAdminPrompt(String newPrompt) {
        if (newPrompt == null || newPrompt.trim().isEmpty()) {
            throw new IllegalArgumentException("Prompt内容不能为空");
        }

        AdminPrompt adminPrompt = adminPromptRepository.findById(1L)
                .orElse(new AdminPrompt());

        adminPrompt.setId(1L);
        adminPrompt.setAdminPrompt(newPrompt.trim());

        adminPromptRepository.save(adminPrompt);
        log.info("✅ AdminPrompt 已更新: {}", newPrompt);
    }

    @Override
    public String getCurrentPrompt() {
        Optional<AdminPrompt> adminPrompt = adminPromptRepository.findById(1L);
        return adminPrompt.map(AdminPrompt::getAdminPrompt)
                .orElse("默认系统提示词");
    }
}
